require 'rubygems'
require 'iup'

speed = 0.00001

pixmap_play = [
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

pixmap_start = [ 
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

pixmap_rewind = [
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

pixmap_forward = [
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

pixmap_show = [
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,
2,2,2,2,2,1,2,2,2,1,1,1,2,2,2,2,1,2,2,2,2,2,
2,2,2,2,1,2,2,2,1,1,2,2,1,2,2,2,2,1,2,2,2,2,
2,2,2,1,2,2,2,2,1,1,1,2,1,2,2,2,2,2,1,2,2,2,
2,2,2,2,1,2,2,2,1,1,1,1,1,2,2,2,2,1,2,2,2,2,
2,2,2,2,2,1,2,2,2,1,1,1,2,2,2,2,1,2,2,2,2,2,
2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,
2,2,2,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]



  gauge = Iup.Gauge(:expand=>"YES")
#  gauge.max = 3.5
#  gauge.min = 0.7

  img_start = Iup.Image(22,22, pixmap_start)
  img_play = Iup.Image(22,22, pixmap_play)
  img_forward = Iup.Image(22,22, pixmap_forward)
  img_rewind = Iup.Image(22,22, pixmap_rewind)
  img_show = Iup.Image(22,22, pixmap_show)
  
  img_start["1"]= "0 0 0" 
  img_start["2"]= "BGCOLOR"
  img_play["1"]= "0 0 0" 
  img_play["2"]= "BGCOLOR" 
  img_forward["1"]= "0 0 0" 
  img_forward["2"]= "BGCOLOR" 
  img_rewind["1"]= "0 0 0" 
  img_rewind["2"]= "BGCOLOR" 
  img_show["1"]= "0 0 0" 
  img_show["2"]= "BGCOLOR" 

  btn_start = Iup.Button(:title=>"start",:image => img_start,:tip => "Start")
  btn_pause = Iup.Button(:title=>"pause",:image => img_play,:tip => "Pause")
  btn_accelerate = Iup.Button(:title=>"accelerate",:image => img_forward,:tip => "Accelerate")
  btn_decelerate = Iup.Button(:title=>"decelerate",:image => img_rewind,:tip => "Decelerate" )
  btn_show = Iup.Button(:title=>"show",:image => img_show,:tip => "Show" )
  
  
idle_cb = lambda do
  value = gauge.value.to_f
  value += speed
  if(value > gauge.max.to_f)
    value = gauge.min.to_f
  end
  gauge.value = "%.7f" % value

  Iup::DEFAULT
end

btn_pause_cb = lambda do |h|
  if(Iup.GetIdle==nil)
    Iup.SetIdle(idle_cb)
  else
    Iup.SetIdle(nil)
  end
  
  Iup::DEFAULT
end

btn_start_cb = lambda do |h|
  gauge.value = gauge.min
  Iup::DEFAULT
end

btn_accelerate_cb = lambda do |h|
  speed *= 2
  if(speed > 1.0) 
  	speed = 1.0
  end
  Iup::DEFAULT
end

btn_decelerate_cb = lambda do |h|
  speed /= 2
  Iup::DEFAULT
end

btn_show_cb = lambda do |h|
  if(gauge.show_text=="NO")
    gauge.show_text = "YES"
    gauge.dashed = "NO"
  else
    gauge.show_text = "NO"
    gauge.dashed = "YES"
  end
  
  Iup::DEFAULT
end

  
  hbox = Iup.Hbox([
           Iup.Fill(), 
           btn_pause,
           btn_start,
           btn_decelerate,
           btn_accelerate,
           btn_show,
           Iup.Fill()
           ])

  vbox = Iup.Vbox([ gauge , hbox],:margin=>"10x10",:gap=>5)

  dlg = Iup.Dialog(vbox,:title=>"IupGauge")
  btn_pause.action = btn_pause_cb
  btn_start.action = btn_start_cb
  btn_accelerate.action = btn_accelerate_cb
  btn_decelerate.action = btn_decelerate_cb
  btn_show.action = btn_show_cb
   
  Iup.SetIdle(idle_cb)
    
  # Shows dialog in the center of the screen */
  dlg.ShowXY(Iup::CENTER, Iup::CENTER)

  # Initializes IUP main loop */
  Iup.MainLoop

  dlg.Destroy

  img_start.Destroy 
  img_play.Destroy 
  img_forward.Destroy 
  img_rewind.Destroy 
  img_show.Destroy 

